package com.internetCafes.spms.web.tenant.dao;

import com.baomidou.mybatisplus.annotation.SqlParser;
import com.internetCafes.spms.core.annotation.NoTentant;
import com.internetCafes.spms.web.tenant.model.TenantDeptInfo;
import com.internetCafes.spms.core.generic.GenericDao;
import com.internetCafes.spms.web.tenant.vo.TenantDeptInfoVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.List;
import java.util.Map;

/**
 * 租户组织架构
 *
 * @author Sunny
 * @email rekeeper2011@hotmail.com
 * @date 2019-10-31 18:09:54
 */
@Mapper
public interface TenantDeptInfoMapper extends GenericDao<TenantDeptInfo, Long> {

    /**
     * 插入
     */
    int insert(TenantDeptInfo tenantDeptInfo);

    /**
     * 批量插入
     */
    int insertBatch(List<TenantDeptInfo> tenantDeptInfoList);

    /**
     * 选择插入
     */
    int insertSelective(TenantDeptInfo tenantDeptInfo);

    /**
     * 按主键ID查询
     */
    TenantDeptInfo selectByPrimaryKey(Long id);

    /**
     * 按主键ID选择更新
     */
    int updateByPrimaryKeySelective(TenantDeptInfo tenantDeptInfo);

    /**
     * 按主键ID更新
     */
    int updateByPrimaryKey(TenantDeptInfo tenantDeptInfo);

    /**
     * 按参数查询
     */
    List<TenantDeptInfo> selectByParams(Map<String, Object> params);

    /**
     * 按参数查询数量
     */
    long countByParams(Map<String, Object> params);

    /**
     * 按主键ID删除
     */
    int deleteByPrimaryKey(Long id);

    /**
     * 按主键ID批量删除
     */
    int deleteBatchByPrimaryKey(List<Long> ids);

    @SqlParser(filter = true)
    List<TenantDeptInfoVo> selectByParamsUnionTenant(Map<String, Object> params);


    long countByParamsUnionTenant(Map<String, Object> params);

    /**
     * 按参数查询结合证书信息表
     */
    @SqlParser(filter = true)
    List<TenantDeptInfoVo> selectByParamsUnionCertificate();

    List<TenantDeptInfoVo> countByParamsUnionEmployee(long id);
}
